﻿using Shop.Core.Share;
using Shop.Model.Dto.Admin.Use;
using Shop.Model.View.Admin.User;

namespace Shop.IServices.Admin;

public interface IUseService
{
    /// <summary>
    /// 用户列表
    /// </summary>
    /// <param name="dto"></param>
    /// <returns></returns>
    AppResult<PageModel<UserListVo>> UserList(UserListDto dto);
    
    /// <summary>
    /// 修改用户上级
    /// </summary>
    /// <param name="userId"></param>
    /// <param name="input"></param>
    /// <returns></returns>
    Task<AppResult<bool>> ChangeSuperior(long userId, SuperiorChangeDto input);

    /// <summary>
    /// 调整级别
    /// </summary>
    /// <param name="dto"></param>
    /// <param name="uId"></param>
    /// <returns></returns>
    AppResult UpUserGrade(UpUserGradeDto dto, long uId);

    /// <summary>
    /// 调整状态
    /// </summary>
    /// <param name="dto"></param>
    /// <returns></returns>
    AppResult UpUserState(UpUserStateDto dto);

    /// <summary>
    /// 用户明细
    /// </summary>
    /// <param name="uId"></param>
    /// <returns></returns>
    AppResult<UseInfoVo> UseInfo(long uId);

    /// <summary>
    /// 用户钱包明细
    /// </summary>
    /// <param name="dto"></param>
    /// <returns></returns>
    AppResult<PageModel<UseWelletVo>> UseWellet(UseWelletDto dto);

    /// <summary>
    /// 钱包调整
    /// </summary>
    /// <param name="dto"></param>
    /// <param name="uId"></param>
    /// <returns></returns>
    AppResult WelletAdjust(WelletAdjustDto dto, long uId);

    /// <summary>
    /// 调整推荐人前查询
    /// </summary>
    /// <param name="dto"></param>
    /// <returns></returns>
    AppResult<ChangeSuperiorFrontVo> ChangeSuperiorFront(int dto);
}